package com.cuixichang.minimalism.service;

import com.cuixichang.minimalism.transfer.dto.IRouterRelationDTO;
import com.cuixichang.minimalism.transfer.po.IRouterRelation;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
/**
 * 系统路由绑定关系表服务接口
 *
 * @author cuixichang
 * @date 2024-12-18
 */
public interface IRouterRelationService{

    IRouterRelationDTO selectById(Long id);

    IRouterRelationDTO selectOne(IRouterRelationDTO iRouterRelationDTO);

    List<IRouterRelationDTO> selectByIds(List<Long> ids);

    List<IRouterRelationDTO> selectList(IRouterRelationDTO iRouterRelationDTO);

    List<IRouterRelationDTO> selectList(IRouterRelationDTO iRouterRelationDTO, BiConsumer<IRouterRelation, QueryWrapper<IRouterRelation>> consumer);

    Page<IRouterRelationDTO> selectPage(IRouterRelationDTO iRouterRelationDTO, long pageSize, long pageNo);

    Page<IRouterRelationDTO> selectPage(IRouterRelationDTO iRouterRelationDTO, long pageSize, long pageNo, BiConsumer<IRouterRelation, QueryWrapper<IRouterRelation>> consumer);

    int deleteById(Long id);

    int deleteByIds(List<Long> ids);

    int deleteByCondition(IRouterRelationDTO iRouterRelationDTO);

    int deleteByCondition(IRouterRelationDTO iRouterRelationDTO, BiConsumer<IRouterRelation, QueryWrapper<IRouterRelation>> consumer);

    IRouterRelationDTO insert(IRouterRelationDTO iRouterRelationDTO);

    IRouterRelationDTO insertHasOption(IRouterRelationDTO iRouterRelationDTO, Function<IRouterRelationDTO,IRouterRelationDTO> preOption);

    int updateById(IRouterRelationDTO iRouterRelationDTO);

    int updateById(IRouterRelationDTO iRouterRelationDTO, BiConsumer<IRouterRelation, UpdateWrapper<IRouterRelation>> consumer);
}